/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2021，所有权利保留。
 * <p>
 * 项目名：	design-pattern 文件名：	SingletonLazy 模块说明： 修改历史： 2021/7/20 0020 - lizhixing - 创建。
 */
package com.lovely602.design.creation.singleton.demo;

/**
 * 懒汉单例模式样例
 *
 * @author lizhixing
 */
public class SingletonLazy {

  public static void main(String[] args) {
    President p1 = President.getInstance();
    p1.getName();
    President p2 = President.getInstance();
    p2.getName();
    if (p1 == p2) {
      System.out.println("他们是同一人");
    } else {
      System.out.println("他们不是同一人");
    }
  }
}

class President {
  private static volatile President instance = null;

  private President() {
    System.out.println("产生一个总统");
  }

  public static synchronized President getInstance() {
    if (instance == null) {
      instance = new President();
    } else {
      System.out.println("已经有一个总统不能生成新的总统");
    }
    return instance;
  }

  public String getName() {
    System.out.println("我是美国总统: 特朗普");
    return "特朗普";
  }
}
